﻿using HK.Core.Common.Protocol;
using HK.Core.Common.Protocol.Data;

namespace HK.Core.Serializable.Protocol.Data
{
    
    /// <summary>
    /// 接口 : 序列化资产版本
    /// <para>* 版本格式 : Max.Mid.Min.Tag</para>
    /// </summary>
    public interface ISAssetVersion : IJsonData
    {
        /// <summary>
        /// Min
        /// </summary>
        int Min { get; set; }
        
        /// <summary>
        /// Mid
        /// </summary>
        int Mid { get; set; }
        
        /// <summary>
        /// Max
        /// </summary>
        int Max { get; set; }
        
        /// <summary>
        /// Tag
        /// </summary>
        string Tag { get; set; }
        
        /// <summary>
        /// 版本信息 - 短
        /// <para>* 版本格式 : Max.Mid.Min</para>
        /// </summary>
        string Short { get; }
        
        /// <summary>
        /// 版本信息 - All
        /// <para>* 版本格式 : Max.Mid.Min.Tag</para>
        /// </summary>
        string Full { get; }

        /// <summary>
        /// 克隆自身
        /// <para>* 会生成新对象</para>
        /// </summary>
        /// <returns>克隆后的版本号</returns>
        ISAssetVersion CloneSelf();
    }
    
}